package com.network.retrofit.net;

import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.HeaderMap;
import retrofit2.http.POST;
import retrofit2.http.Streaming;
import retrofit2.http.Url;

/**
 * 项目: com.network.retrofit.net
 * 创建人: LuoFG
 * 创建时间: 2021/7/2  14:37
 * 描述:
 */
public interface RetrofitBaseApi {


    //Url 作为参数的Post 请求 urlencoded形式
    @FormUrlEncoded
    @POST
    Observable<Object> doPost(@Url String url, @FieldMap Map<String,Object> map, @HeaderMap Map<String,String> header);


    //Url 作为参数的Post 请求 body形式
    @POST
    Observable<Object> doPostBody(@Url String url, @Body RequestBody body, @HeaderMap Map<String,String> header);

    //Url 大文件下载,其中：range="bytes=" + downloadLength + "-" + contentLength
    @Streaming
    @GET
    Observable<ResponseBody> doDownFile(@Url String url,@Header("Range") String range);

    //Url 大文件下载 不支持续传
    @Streaming
    @GET
    Observable<ResponseBody> doDownFile(@Url String url);

}
